/**
 * <strong>Title : WorkUnitService.java<br>
 * </strong> <strong>Package : cn.b.sky.mes.cm.service<br>
 * </strong> <strong>Description : </strong>@类注释说明写在此处@<br>
 * <strong>Create on : 2015年9月24日 上午11:25:04<br>
 * </strong>
 * <p>
 * @author dapeng.li<br>
 * @version <strong>v1.0.0</strong><br>
 *          <br>
 *          <strong>修改历史:</strong><br>
 *          修改人 | 修改日期 | 修改描述<br>
 *          -------------------------------------------<br>
 *          <br>
 *          <br>
 */
package cn.b.sky.mes.cm.service;

import java.util.List;

import cn.b.sky.mes.cm.model.WorkUnit;
import cn.b.sky.mes.cm.model.WorkUnitJSON;
import cn.b.sky.mes.cm.model.condition.WorkUnitCondition;
import cn.b.sky.common.model.BatchJobReport;

/**
 * <strong>Title : WorkUnitService.java<br></strong>
 * <strong>Package : cn.b.sky.mes.cm.service<br></strong>
 * <strong>Description : </strong>@工作单元业务 提供增删改查@<br> 
 * <strong>Create on : 2015年9月24日 上午11:25:04<br></strong>
 * <p>
 * @author dapeng.li<br>
 * @version <strong>v1.0.0</strong><br>
 * <br>
 * <strong>修改历史:</strong><br>
 * 修改人 | 修改日期 | 修改描述<br>
 * -------------------------------------------<br>
 * <br>
 * <br>
 */
public interface WorkUnitService {

  /**
   * <strong>Title : selectWorkUnitList<br></strong>
   * <strong>Description : </strong>@工作单元模糊查询@<br> 
   * <strong>Create on : 2015年9月25日 下午5:39:49<br></strong>
   * <p>
   * @param condition
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   * @return 
   */
  List<WorkUnit> selectWorkUnitList(WorkUnitCondition condition);

  /**
   * <strong>Title : getWorkUnitCount<br></strong>
   * <strong>Description : </strong>@获取工作单元数据条数@<br> 
   * <strong>Create on : 2015年9月24日 下午12:53:47<br></strong>
   * <p>
   * @param workUnitCondition
   * @return
   * int
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人  | 修改日期  | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  int getWorkUnitCount(WorkUnitCondition workUnitCondition);

  /**
   * 
   * <strong>Title : getWorkUnit<br></strong>
   * <strong>Description : </strong>获取作业单元<br> 
   * <strong>Create on : 2016-9-19 下午4:21:17<br></strong>
   * <p>
   * @param workUnitCode
   * @param siteCode
   * @return
   * WorkUnit
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  WorkUnit getWorkUnit(String workUnitCode, String siteCode);

  /**
   * <strong>Title : insertWorkUnit<br></strong>
   * <strong>Description : </strong>@插入作业单元@<br> 
   * <strong>Create on : 2015年9月24日 下午12:54:34<br></strong>
   * <p>
   * @param workUnit
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人  | 修改日期  | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void insertWorkUnit(WorkUnit workUnit);

  /**
   * <strong>Title : updateWorkUnit<br></strong>
   * <strong>Description : </strong>@编辑，更新作业单元@<br> 
   * <strong>Create on : 2015年9月24日 下午12:54:43<br></strong>
   * <p>
   * @param workUnit
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人  | 修改日期  | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void updateWorkUnit(WorkUnit workUnit);

  /**
   * <strong>Title : deleteWorkUnits<br></strong>
   * <strong>Description : </strong>@删除作业单元@<br> 
   * <strong>Create on : 2015年9月24日 下午12:54:51<br></strong>
   * <p>
   * @param workUnits
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人  | 修改日期  | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   * @return 
   */
  BatchJobReport deleteWorkUnits(String workUnits, String siteCode);

  /**
   * <strong>Title : getWorkUnitExactCount<br></strong>
   * <strong>Description : </strong>@获取同一工厂作业单元总数@<br> 
   * <strong>Create on : 2015年9月24日 下午7:09:19<br></strong>
   * <p>
   * @param workUnitCondition
   * @return
   * int
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人  | 修改日期  | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  int getWorkUnitExactCount(WorkUnitCondition workUnitCondition);

  /**
   * <strong>Title : getWorkUnit<br></strong>
   * <strong>Description : </strong>@根据条件获得作业单元实体@<br> 
   * <strong>Create on : 2015年9月24日 下午7:15:56<br></strong>
   * <p>
   * @param workUnitCondition
   * @return
   * WorkUnit
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人  | 修改日期  | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  WorkUnit getWorkUnit(WorkUnitCondition workUnitCondition);

  /**
   * <strong>Title : insertWorkUnitTypeAssign<br></strong>
   * <strong>Description : </strong>匹配多条作业单元类型，插入作业单元分配表<br> 
   * <strong>Create on : 2015年9月29日 下午1:45:21<br></strong>
   * <p>
   * @param workUnit
   * @param workUnitTypeIds
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void insertWorkUnitTypeAssign(WorkUnit workUnit, String[] workUnitTypeIds, String siteCode);

  /**
   * <strong>Title : updateWorkUnitTypeAssign<br></strong>
   * <strong>Description : </strong>更新作业单元分配表@<br> 
   * <strong>Create on : 2015年9月29日 下午1:49:14<br></strong>
   * <p>
   * @param workUnit
   * @param workUnitTypeIds
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void updateWorkUnitTypeAssign(WorkUnit workUnit, String[] workUnitTypeIds, String siteCode);

  /**
   * 
   * <strong>Title : selectWorkUnitSuggest<br></strong>
   * <strong>Description : </strong>建议查找<br> 
   * <strong>Create on : 2015-12-21 上午11:21:07<br></strong>
   * <p>
   * @param condition
   * @return
   * List<WorkUnit>
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<WorkUnit> selectWorkUnitSuggest(WorkUnitCondition condition);

  /**
   * 
   * <strong>Title : selectWorkUnitByCenterAndType<br></strong>
   * <strong>Description : </strong>根据工作中心及作业单元类型查找作业单元<br> 
   * <strong>Create on : 2016年8月11日 上午9:40:36<br></strong>
   * <p>
   * @param siteCode
   * @param workCenterCode
   * @param workUnitType
   * @return
   * List<WorkUnitJSON>
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<WorkUnitJSON> selectWorkUnitByCenterAndType(String siteCode, String workCenterCode, String workUnitType);

  /**
   * 
   * <strong>Title : getAllWorkUnitListBySiteCode<br></strong>
   * <strong>Description : </strong>根据工厂、状态获取全部作业单元<br> 
   * <strong>Create on : 2016-8-25 上午10:18:17<br></strong>
   * <p>
   * @param siteCode
   * @param lockFlag
   * @return
   * List<WorkUnit>
   * @throws 
   * @author JinQuan.Fu<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<WorkUnit> getAllWorkUnitListBySiteCode(String siteCode, Integer lockFlag);

}
